<?php
/**
 * Created by PhpStorm.
 * User: hnh
 * Date: 2017/11/15
 * Time: 上午11:17
 */

namespace core\model;

class Model{
    protected static $config;
    protected $talbe;//表名

    /**
     * 当实例化某个类调用的方法不存在的时候,会自动触发该方法,例如(new View())->make()
     * @param $name
     * @parModel::get();am $arguments
     */
    public function __call($name, $arguments)
    {
        return self::parseAction($name, $arguments);
    }

    /**
     * 当静态调用某个类的方法不存在的时候,会自动触发该方法,例如 View::make()
     * @param $name
     * @param $arguments
     */
    public static function __callStatic($name, $arguments)
    {
        return self::parseAction($name, $arguments);
    }

    /**
     * 把调用的方法，转到Base类里面去
     * @param $name
     * @param $arguments
     * @return mixed
     */
    public static function parseAction($name, $arguments){
        //获取调用静态方法的类的名称
        $info = get_called_class();
        $data = explode('\\',$info);
        //从$data中获取表名,也就是切割成数组之后的最后一个值
        $table = strtolower($data[2]);
        return call_user_func_array([new Base(self::$config,$table),$name],$arguments);
    }



    public static function getConfig($config){
        //将获取到的$config数据库配置项共享出来,变成公共属性
        self::$config = $config;
    }

}